package com.exam.sacrifice.util;

import android.content.Context;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;

public class GlideUtil {

    /**
     * 普通加载图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 目标ImageView
     */
    public static void loadImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .into(imageView);
    }

    /**
     * 加载圆形图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 目标ImageView
     */
    public static void loadCircleImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .apply(RequestOptions.circleCropTransform())
                .into(imageView);
    }

    /**
     * 加载圆角图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 目标ImageView
     * @param radius 圆角半径(px)
     */
    public static void loadRoundImage(Context context, String url, ImageView imageView, int radius) {
        Glide.with(context)
                .load(url)
                .apply(RequestOptions.bitmapTransform(new RoundedCorners(radius)))
                .into(imageView);
    }

    /**
     * 加载图片并设置占位图和错误图
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 目标ImageView
     * @param placeholderId 占位图资源ID
     * @param errorId 错误图资源ID
     */
    public static void loadImageWithPlaceholder(Context context, String url, ImageView imageView,
                                                int placeholderId, int errorId) {
        Glide.with(context)
                .load(url)
                .apply(new RequestOptions()
                        .placeholder(placeholderId)
                        .error(errorId))
                .into(imageView);
    }

    /**
     * 跳过内存缓存加载图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 目标ImageView
     */
    public static void loadImageSkipMemoryCache(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .apply(new RequestOptions()
                        .skipMemoryCache(true))
                .into(imageView);
    }

    /**
     * 清除磁盘缓存
     * @param context 上下文
     */
    public static void clearDiskCache(final Context context) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Glide.get(context).clearDiskCache();
            }
        }).start();
    }

    /**
     * 清除内存缓存
     * @param context 上下文
     */
    public static void clearMemoryCache(Context context) {
        Glide.get(context).clearMemory();
    }
}